﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Plano_manutencao
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Plano_manutencao()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Plano_manutencao(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public DataSet _retorna_Plano_manutencao(
                                                string CTM_PLANO_MANUTENCAO_ID,
                                                string PART_NUMBER_ID,
                                                string PLM_PLANO,
                                                string PLM_PUBLICACAO,
                                                string PLM_DATA_PUBLICACAO,
                                                string PLM_DATA_VALIDADE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_PLANO_MANUTENCAO_ID)) CTM_PLANO_MANUTENCAO_ID = "'0'";
            if (string.IsNullOrEmpty(PART_NUMBER_ID)) PART_NUMBER_ID = "'0'";
            if (string.IsNullOrEmpty(PLM_PLANO)) PLM_PLANO = "''";
            if (string.IsNullOrEmpty(PLM_PUBLICACAO)) PLM_PUBLICACAO = "''";
            if (string.IsNullOrEmpty(PLM_DATA_PUBLICACAO)) PLM_DATA_PUBLICACAO = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));
            if (string.IsNullOrEmpty(PLM_DATA_VALIDADE)) PLM_DATA_VALIDADE = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));

            string sql = "SELECT " +
                                  "CTM_PLANO_MANUTENCAO.CTM_PLANO_MANUTENCAO_ID, " +
                                  "CTM_PLANO_MANUTENCAO.PART_NUMBER_ID, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_PLANO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_PUBLICACAO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_DATA_PUBLICACAO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_DATA_VALIDADE " +
                            "FROM CTM_PLANO_MANUTENCAO " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = CTM_PLANO_MANUTENCAO.PART_NUMBER_ID " +
                            "WHERE " +
                            "      (CTM_PLANO_MANUTENCAO.CTM_PLANO_MANUTENCAO_ID         = " + CTM_PLANO_MANUTENCAO_ID + "  OR " + CTM_PLANO_MANUTENCAO_ID + " = '0') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PART_NUMBER_ID                  = " + PART_NUMBER_ID + "  OR " + PART_NUMBER_ID + " = '0') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_PLANO                       = " + PLM_PLANO + "  OR " + PLM_PLANO + " = '') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_PUBLICACAO                  = " + PLM_PUBLICACAO + "  OR " + PLM_PUBLICACAO + " = '') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_DATA_PUBLICACAO             = " + PLM_DATA_PUBLICACAO + "  OR " + PLM_DATA_PUBLICACAO + " = '') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_DATA_VALIDADE               = " + PLM_DATA_VALIDADE + "  OR " + PLM_DATA_VALIDADE + " = '') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }


        public List<ES_Plano_manutencao> _obter_Plano_manutencao(
                                                string CTM_PLANO_MANUTENCAO_ID,
                                                string PART_NUMBER_ID,
                                                string MODELO_ID,
                                                string PLM_PLANO,
                                                string PLM_PUBLICACAO,
                                                string PLM_DATA_PUBLICACAO,
                                                string PLM_DATA_VALIDADE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_PLANO_MANUTENCAO_ID)) CTM_PLANO_MANUTENCAO_ID = "0";
            if (string.IsNullOrEmpty(PART_NUMBER_ID)) PART_NUMBER_ID = "0";
            if (string.IsNullOrEmpty(MODELO_ID)) MODELO_ID = "0";
            if (string.IsNullOrEmpty(PLM_PLANO)) PLM_PLANO = "''";
            if (string.IsNullOrEmpty(PLM_PUBLICACAO)) PLM_PUBLICACAO = "''";
            if (string.IsNullOrEmpty(PLM_DATA_PUBLICACAO)) PLM_DATA_PUBLICACAO = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));
            if (string.IsNullOrEmpty(PLM_DATA_VALIDADE)) PLM_DATA_VALIDADE = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));

            string sql = "SELECT " +
                                  "CTM_PLANO_MANUTENCAO.CTM_PLANO_MANUTENCAO_ID, " +
                                  "CTM_PLANO_MANUTENCAO.PART_NUMBER_ID, " +
                                  "CTM_PLANO_MANUTENCAO.MODELO_ID, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_PLANO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_PUBLICACAO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_DATA_PUBLICACAO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_DATA_VALIDADE " +
                            "FROM CTM_PLANO_MANUTENCAO " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = CTM_PLANO_MANUTENCAO.PART_NUMBER_ID " +
                            "WHERE " +
                            "      (CTM_PLANO_MANUTENCAO.CTM_PLANO_MANUTENCAO_ID         = " + CTM_PLANO_MANUTENCAO_ID + "  OR " + CTM_PLANO_MANUTENCAO_ID + " = 0) AND " +
                            "      (CTM_PLANO_MANUTENCAO.PART_NUMBER_ID                  = " + PART_NUMBER_ID + "  OR " + PART_NUMBER_ID + " = 0) AND " +
                            "      (CTM_PLANO_MANUTENCAO.MODELO_ID                  = " + MODELO_ID + "  OR " + MODELO_ID + " = 0) AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_PLANO                       = " + PLM_PLANO + "  OR " + PLM_PLANO + " = '') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_PUBLICACAO                  = " + PLM_PUBLICACAO + "  OR " + PLM_PUBLICACAO + " = '') AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_DATA_PUBLICACAO             = " + PLM_DATA_PUBLICACAO + "  OR " + PLM_DATA_PUBLICACAO + " = " + PLM_DATA_PUBLICACAO + ") AND " +
                            "      (CTM_PLANO_MANUTENCAO.PLM_DATA_VALIDADE               = " + PLM_DATA_VALIDADE + "  OR " + PLM_DATA_VALIDADE + " = " + PLM_DATA_PUBLICACAO + ") " +
                            "ORDER BY CTM_PLANO_MANUTENCAO.PLM_PLANO ";

            List<ES_Plano_manutencao> lista = new List<ES_Plano_manutencao>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Plano_manutencao item = new ES_Plano_manutencao();
                    item.CTM_PLANO_MANUTENCAO_ID = dr["CTM_PLANO_MANUTENCAO_ID"].ToString();
                    item.PART_NUMBER_ID = dr["PART_NUMBER_ID"].ToString();
                    item.MODELO_ID = dr["MODELO_ID"].ToString();
                    item.PLM_PLANO = dr["PLM_PLANO"].ToString();
                    item.PLM_PUBLICACAO = dr["PLM_PUBLICACAO"].ToString();
                    item.PLM_DATA_PUBLICACAO = Util.formataData(dr["PLM_DATA_PUBLICACAO"].ToString(), "dd/MM/yyyy");
                    item.PLM_DATA_VALIDADE = Util.formataData(dr["PLM_DATA_VALIDADE"].ToString(), "dd/MM/yyyy");
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public ES_Plano_manutencao _obter_Plano_manutencao_by_id(string CTM_PLANO_MANUTENCAO_ID)
        {

            if (string.IsNullOrEmpty(CTM_PLANO_MANUTENCAO_ID)) CTM_PLANO_MANUTENCAO_ID = "'0'";

            string sql = "SELECT " +
                                  "CTM_PLANO_MANUTENCAO.CTM_PLANO_MANUTENCAO_ID, " +
                                  "CTM_PLANO_MANUTENCAO.PART_NUMBER_ID, " +
                                  "CTM_PLANO_MANUTENCAO.MODELO_ID, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_PLANO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_PUBLICACAO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_DATA_PUBLICACAO, " +
                                  "CTM_PLANO_MANUTENCAO.PLM_DATA_VALIDADE " +
                            "FROM CTM_PLANO_MANUTENCAO " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = CTM_PLANO_MANUTENCAO.PART_NUMBER_ID " +
                            "WHERE " +
                            "      (CTM_PLANO_MANUTENCAO.CTM_PLANO_MANUTENCAO_ID = " + CTM_PLANO_MANUTENCAO_ID + "  OR " + CTM_PLANO_MANUTENCAO_ID + " = '0') ";

            ES_Plano_manutencao item = new ES_Plano_manutencao();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.CTM_PLANO_MANUTENCAO_ID = dr["CTM_PLANO_MANUTENCAO_ID"].ToString();
                    item.PART_NUMBER_ID = dr["PART_NUMBER_ID"].ToString();
                    item.MODELO_ID = dr["MODELO_ID"].ToString();
                    item.PLM_PLANO = dr["PLM_PLANO"].ToString();
                    item.PLM_PUBLICACAO = dr["PLM_PUBLICACAO"].ToString();
                    item.PLM_DATA_PUBLICACAO = dr["PLM_DATA_PUBLICACAO"].ToString();
                    item.PLM_DATA_VALIDADE = dr["PLM_DATA_VALIDADE"].ToString();

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public void _inserir_Plano_manutencao(
                                                string CTM_PLANO_MANUTENCAO_ID,
                                                string PART_NUMBER_ID,
                                                string PLM_PLANO,
                                                string MODELO_ID,
                                                string PLM_PUBLICACAO,
                                                string PLM_DATA_PUBLICACAO,
                                                string PLM_DATA_VALIDADE
                                                )
        {

            string sql = " INSERT INTO CTM_PLANO_MANUTENCAO " +
                         "      ( " +
                         "          PART_NUMBER_ID                 , " +
                         "          MODELO_ID                 , " +
                         "          PLM_PLANO                      , " +
                         "          PLM_PUBLICACAO                 , " +
                         "          PLM_DATA_PUBLICACAO            , " +
                         "          PLM_DATA_VALIDADE                " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarNull(PART_NUMBER_ID) + ", " +
                              Util.retonarNull(MODELO_ID) + ", " +
                              Util.retonarAspas(PLM_PLANO, true) + ", " +
                              Util.retonarAspas(PLM_PUBLICACAO, true) + ", " +
                              Util.retonarAspas(Util.formataData(PLM_DATA_PUBLICACAO), true) + ", " +
                              Util.retonarAspas(Util.formataData(PLM_DATA_VALIDADE), true) +
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Plano_manutencao(
                                                string CTM_PLANO_MANUTENCAO_ID,
                                                string PART_NUMBER_ID,
                                                string MODELO_ID,
                                                string PLM_PLANO,
                                                string PLM_PUBLICACAO,
                                                string PLM_DATA_PUBLICACAO,
                                                string PLM_DATA_VALIDADE
                                                )
        {

            string sql = " UPDATE CTM_PLANO_MANUTENCAO SET " +
                         "      PART_NUMBER_ID                  = " + Util.retonarNull(PART_NUMBER_ID) + ", " +
                         "      MODELO_ID                       = " + Util.retonarNull(MODELO_ID) + ", " +
                         "      PLM_PLANO                       = " + Util.retonarAspas(PLM_PLANO, true) + ", " +
                         "      PLM_PUBLICACAO                  = " + Util.retonarAspas(PLM_PUBLICACAO, true) + ", " +
                         "      PLM_DATA_PUBLICACAO             = " + Util.retonarAspas(Util.formataData(PLM_DATA_PUBLICACAO), true) + ", " +
                         "      PLM_DATA_VALIDADE               = " + Util.retonarAspas(Util.formataData(PLM_DATA_VALIDADE), true) +
                         " WHERE CTM_PLANO_MANUTENCAO_ID =  " + CTM_PLANO_MANUTENCAO_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Plano_manutencao(string CTM_PLANO_MANUTENCAO_ID)
        {
            string sql = "DELETE FROM CTM_PLANO_MANUTENCAO WHERE CTM_PLANO_MANUTENCAO_ID = " + CTM_PLANO_MANUTENCAO_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }

        public void sp_plano_manutencao_clone(string P_CTM_PLANO_MANUTENCAO_ID,
                                                string P_PLM_PLANO_CLONE,
                                                string P_PLM_PUBLICACAO_CLONE,
                                                string P_PLM_DATA_PUBLICACAO_CLONE,
                                                string P_PLM_DATA_VALIDADE_CLONE
                                           )
        {
            string sql = "EXECUTE PROCEDURE SP_PLANO_MANUTENCAO_CLONE   (" +
                         "                                               " + Util.retonarNull(P_CTM_PLANO_MANUTENCAO_ID) + ", " +
                         "                                               " + Util.retonarAspas(P_PLM_PLANO_CLONE, true) + ", " +
                         "                                               " + Util.retonarAspas(P_PLM_PUBLICACAO_CLONE, true) + ", " +
                         "                                               " + Util.retonarAspas(Util.formataData(P_PLM_DATA_PUBLICACAO_CLONE),true) + ", " +
                         "                                               " + Util.retonarAspas(Util.formataData(P_PLM_DATA_VALIDADE_CLONE),true) + ")";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }


        #endregion
    }
}
